package com.obrempon.credit.market.utils.helper

import com.obrempon.credit.market.utils.shared.ObremponSharedHelper
import com.obrempon.credit.market.utils.shared.ObremponSharedKey
import org.json.JSONArray
import org.json.JSONObject

/**
 * ObremponCredit
 * @Author wwdeng
 * @CreateTime: 2024/12/18 16:56
 * @Annotation：产品列表
 */
object ObremponProductHelper {


    /**
     * 保存产品数据
     */
    fun insertObremponProductData(pData: String){
        ObremponSharedHelper.addObremponSharedData(ObremponSharedKey.OBREMPON_PRODUCT,pData)
    }

    /**
     * 获取所有产品列表
     */
    private fun takeObremponProductList(): ArrayList<JSONObject>{
        val pList = arrayListOf<JSONObject>()
        val pData = ObremponSharedHelper.queryObremponSharedString(ObremponSharedKey.OBREMPON_PRODUCT)
        if (pData.isNotEmpty()){
            val pArray = JSONArray(pData)
            for (i in 0..< pArray.length()){
                pList.add(pArray.optJSONObject(i))
            }
        }
       return pList
    }

    /**
     * 可申请 && 不可申请 列表
     */
    fun takeObremponAvailableProductList(): ArrayList<JSONObject>{
        val productList = takeObremponProductList()
        val pList = arrayListOf<JSONObject>()
        if (productList.size > 0){
            for (i in 0..<productList.size){
                val item = productList[i]
                val status = item.optString("status")
                val applyStatus = item.optString("applyStatus")
                val activeFlag = item.optString("activeFlag")
                //已拒绝
                if (ObremponProductStatusHelper.StatusRepository(applyStatus).isRejected()){
                    continue
                }
                if (status == "APPLY"){//待申请状态
                    pList.add(item)
                }
            }
        }
        return pList
    }


    /**
     * 已申请产品列表（审核中、放款中、已拒绝）
     */
    fun takeObremponAppliedProductList(): ArrayList<JSONObject> {
        val productList = takeObremponProductList()
        val pList = arrayListOf<JSONObject>()
        if (productList.isNotEmpty()){
            for (i in 0..<productList.size){
                val item = productList[i]
                val status = item.optString("status")
                val applyStatus = item.optString("applyStatus")
                val activeFlag = item.optString("activeFlag")

                //已拒绝
                if (ObremponProductStatusHelper.StatusRepository(applyStatus).isRejected()){
                    pList.add(item)
                    continue
                }
                //非可申请 && 非待还款
                if (activeFlag == "YES" && status != "APPLY" && status != "REPAYMENT"){
                    pList.add(item)
                }
            }
        }
        return pList
    }

    /**
     * 待还款产品列表
     */
    fun takeObremponRepayProductList(): ArrayList<JSONObject> {
        val productList = takeObremponProductList()
        val pList = arrayListOf<JSONObject>()
        if (productList.isNotEmpty()){
            for (i in 0..<productList.size){
                val item = productList[i]
                val status = item.optString("status")
                val applyStatus = item.optString("applyStatus")
                val activeFlag = item.optString("activeFlag")
                //待还款
                if (status == "REPAYMENT"){
                    pList.add(item)
                }
            }
        }
        return pList
    }

    /**
     * 未完成的产品列表（审核中、放款中、待还款）
     */
    fun takeObremponUncompleteProductList(): ArrayList<JSONObject>{
        val productList = takeObremponProductList()
        val pList = arrayListOf<JSONObject>()
        if (productList.isNotEmpty()){
            for (i in 0..<productList.size){
                val item = productList[i]
                val status = item.optString("status")
                val applyStatus = item.optString("applyStatus")
                val activeFlag = item.optString("activeFlag")
                if (status == "APPLY"){//待申请状态
                    continue
                }
                //已拒绝
                if (ObremponProductStatusHelper.StatusRepository(applyStatus).isRejected()){
                    continue
                }
                pList.add(item)
            }
        }
        return pList
    }
}